home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 3
/
Gold Medal Software - Volume 3 (Gold Medal) (1994).iso
/
prog
/
word.arj
/
INVADE6.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-28
|
4KB
|
172 lines
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
#include <ctype.h>
#include <wgt.h>
#include <spr.h>
block title;
color palette[256];
block sprites[1001];
int x,y,i,ops;
char k;
int shoot;
int alshoot[15],totshoot;
// sprites numbers (So you don't get confused)
// 1 = spaceship
// 2 = missile fired
// 3-24 = aliens!
// 25-39= aliens missiles
void looper();
void main(void)
{
printf("WordUp Graphics Toolkit Example Program\n\n");
printf("This program is meant to show off what the\n");
printf("WGT Library can do, and is not meant as a\n");
printf("complete shareware or public domain game.\n");
printf("Please remember this while playing the game.\n\n");
printf("Press q during the game to quit...\n\n\n");
i=minit();
if (i==0)
{
printf("Mouse not detected. You need a mouse for this example program\n");
printf("Press any key\n");
getch();
exit(1);
}
else printf("Mouse with %i buttons detected.\n",i);
printf("Press any key\n");
getch();
vga256();
title=wloadpak("invade.pak");
wloadsprites(&palette,"invader.spr",sprites);
initspr();
spon=39; // thirty nine sprites on now
spclip=1;
wsetscreen(spritescreen);
wputblock(0,0,title,0);
wcopyscreen(0,0,319,199,spritescreen,0,0,NULL);
getch();
wsetcolor(0);
wbar(0,0,319,140);
wcopyscreen(0,0,319,199,spritescreen,0,0,NULL);
spriteon(1,160,148,1);
for (y=0; y<3; y++)
for (x=1; x<8; x++)
{
spriteon((y*7)+x+2,x*20+10,20+y*30,3); // turn alien on
animate((y*7)+x+2,"(3,3)(4,3)(5,3)(4,3)R"); // animate it
animon((y*7)+x+2);
movex((y*7)+x+2,"(1,150,0)(0,30,0)(-1,150,0)(0,30,0)R"); // set up x movement
movey((y*7)+x+2,"(0,150,0)(1,30,0)(0,150,0)(-1,30,0)R"); // set up y movement
movexon((y*7)+x+2);
moveyon((y*7)+x+2);
}
msetbounds(0,148,319,148);
do {
looper();
} while (k !='Q');
msetbounds(0,0,319,199);
textmode(C80);
}
void looper(void)
{
erasespr();
mread();
s[1].x=mx;
s[1].y=my;
if (but==1) // if you pressed the left button
{
if (shoot==0) // not shooting then
{
sound(600);
spriteon(2,s[1].x+3,s[1].y,2); // turn on the missile sprite
movey(2,"(-2,200,0)"); // make it move up
moveyon(2); // turn the movement on
shoot=1;
}
}
for (y=0; y<3; y++) // loop through all aliens
for (x=1; x<8; x++)
{
if (s[(y*7)+x+2].on !=0) // if you haven't hit it yet
{
if ((rand() % 50==5) & (totshoot <13)) // 1 in 50 chance of shooting
{ // cannot shoot more than 14 at once
// since we can only have 40 sprites
ops=1;
i=1;
do {
if (alshoot[i]==0) // find an open slot for missile
ops=i;
i++;
} while (i<14);
alshoot[ops]=1;
totshoot++;
spriteon(ops+24,s[(y*7)+x+2].x+4,s[(y*7)+x+2].y,2); // turn shot on
movey(ops+24,"(1,160,0)"); // move it down
moveyon(ops+24);
}
if (overlap(2,(y*7)+x+2)==1) // and your missile is hitting it
{
sound(200);
spriteoff(2); // turn off the missile
shoot=0; // not shooting anymore
animate((y*7)+x+2,"(6,5)(7,5)(8,5)(9,5)(10,5)"); // show explosion
animon((y*7)+x+2); // reset animation
}
if (s[(y*7)+x+2].num==10) // if finished animating,
spriteoff((y*7)+x+2); // turn off the sprite
}
}
for (y=1; y<15; y++)
{
if (s[y+24].y>154)
{
alshoot[y]=0;
spriteoff(y+24);
totshoot--;
}
}
if (s[2].y<-10)
shoot=0;
if (kbhit())
k=toupper(getch()); // convert to uppercase letter
drawspr();
nosound();
}